package com.cn.zpark;

import com.cn.zpark.utils.DruidUtils;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * 登录流程：
 *      1、用户在浏览器输入用户名和密码，点击提交
 *      2、后台接收用户提交的表单数据
 *      3、根据用户的用户名前往数据库查询数据
 *      4、判断是否有数据，没有数据，则登录失败，有数据则比较密码
 *      5、比较密码成功，则登录成功，否则登录失败
 *
 */
@WebServlet("/login.do")
public class LoginServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 设置请求缓冲区编码
        request.setCharacterEncoding("utf-8");
        // 设置响应内容格式及编码
        response.setContentType("text/html;charset=utf-8");
        // 获取写出流
        PrintWriter writer = response.getWriter();

        // 获取用户提交的表单数据
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        System.out.println(username + " : " + password);

        // 根据用户的用户名前往数据库查询数据
        /*
            使用JDBC查询
         */
        // 定义连接数据库相关
        Connection conn = null;
        PreparedStatement stat = null;
        ResultSet res = null;
        String message = "用户名或者密码错误";

        try {
            // 获取数据库连接对象
            conn = DruidUtils.getConn();
            // 创建sql，根据用户名查询用户数据
            String sql = "select id, uname, pwd from tab1 where uname=?";
            // 创建预编译sql对象
            stat = conn.prepareStatement(sql);
            // 替换占位符
            stat.setString(1, username);
            // 执行sql
            res = stat.executeQuery();



            // 判断查询结果是否为空
            while (res.next()) {
                // 有数据，比较密码
                String pwd = res.getString("pwd");
                if(pwd.equals(password)){
                    // 对比成功
                    message = "<h1>恭喜你登录成功</h1>";
                }
            }


            // 响应信息回去
            writer.println(message);

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // 关闭资源
            DruidUtils.close(conn, res, stat);
            writer.close();
        }



    }
}
